<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>



    /*let a = 1,b = 2,c = 3,d = 4;
    
    //rest运算符（实参转为数组）
    fun = (a,...arge) =>{
        console.log(a);
        console.log(arge);
    }
    fun(a,b,c,d); */



    /* // spread运算符（转多个参数）
    let arr = [1,2,3,7];
    let str = "nihaoshijie";
    console.log([...str]);                      //字符串转数组
    console.log(["开始",...arr,"结束"]);         //拼接数组
    function funs(a,b,c,d){                      //数组变参数
            console.log(a);              
            console.log(b);              
            console.log(c);              
            console.log(d);              
    }
    funs(...arr);

    console.log(Math.max(...arr));               //找最大最小值 */




    //*******注意：arguments只能在普通函数里面用，不能在箭头函数里面使用*********
    
    /* 
        当三个点(...)在等号左边，或者放在形参上。为 rest 运算符
        当三个在等号右边，或者放在实参上，是 spread运算符
        或者说：
        放在被赋值一方是rest 运算符。放在赋值一方式 spread运算符。
    */



    //箭头函数
    let a = "这是箭头函数";
    fn = (a) => {
        console.log(a);
    }
    fn(a);


    /* 箭头函数中this指向规律：

​	1）箭头函数一旦声明完成，this指向就固定了；并且与call() / apply() 无关

​	2）箭头函数中this永远指向其外部环境（函数内或全局下） */


    //es6中的对象

    //声明父类（建议首字母大写）
    class People {
        //声明构造函数（必须要有构造函数constructor,没有es6自己给你加）
        constructor(name,sex){
            this.name = name;
            this.sex = sex;
            this.say();
        }
        //普通函数
        say(){
            console.log(`我是${this.sex},名字是${this.name}`);
        }
        static jing(){
            console.log("我是静态函数");
        }
    }
    let p1 = new People("人","男");     //调用

    // 实现继承
    class Boy extends People {
        constructor(name){
            super(name);                //将父类name属性传给子类
            this.sex = "男";
            super.say();
        }
        say(){
            console.log("我是子类的男孩对象");
        }
    }
    let b1 = new Boy("jack");


    //for...of...循环（遍历各种数据类型）







</script>